package pub.tbc.api.service.balancing;


import java.util.List;
import java.util.Map;

/**
 * @author tbc on 2017/3/21 17:34:44.
 */
public interface LoadBalancing {

    /**
     * 随机算法
     *
     * @param services 服务地址列表
     * @return 服务地址
     */
    String random(List<String> services);

    /**
     * 轮询算法
     *
     * @param services 服务地址列表
     * @return 服务地址
     */
    String poll(List<String> services);

    /**
     * 加权随机
     *
     * @param services 带权重的服务地址列表
     * @return 服务地址
     */
    String weighRandom(List<Map<String, Integer>> services);

    /**
     * 加权轮询
     *
     * @param services 带权重的服务地址列表
     * @return 服务地址
     */
    String weighPoll(List<Map<String, Integer>> services);


}
